package remoto;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.List;

import dominioTO.ClienteTO;
import dominioTO.CotizacionTO;
import dominioTO.ItemCotizacionTO;
import dominioTO.ItemListaPreciosTO;
import dominioTO.ListaPreciosTO;
import dominioTO.OrdenCompraProveedorTO;
import dominioTO.OrdenPedidoClienteTO;
import dominioTO.ProveedorTO;
import dominioTO.RemitoClienteTO;
import dominioTO.RemitoProveedorTO;
import dominioTO.RodamientoTO;
import dominioTO.SolicitudRodamientosTO;


public class Proxy implements InterfazRemota{
	private static Proxy instancia;
	private InterfazRemota iRemota;
	
	
	public static Proxy getInstancia()
	{
		if(instancia==null)
		{
			instancia = new Proxy();
		}
		return instancia;				
	}
	public Proxy()
	{
		try {
			String location="//localhost/Sistema";
			iRemota =(InterfazRemota) Naming.lookup(location);
			
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	
	@Override
	public void persistirCliente(List<ClienteTO> list) throws RemoteException {
		// TODO Auto-generated method stub
		iRemota.persistirCliente(list);
	}
	@Override
	public ClienteTO buscarCliente(String cuit) throws RemoteException {
		// TODO Auto-generated method stub
		return iRemota.buscarCliente(cuit);
	}
	@Override
	public void persistirProveedor(List<ProveedorTO> list)
			throws RemoteException {
		// TODO Auto-generated method stub
		iRemota.persistirProveedor(list);
		
	}
	@Override
	public ProveedorTO buscarProveedor(String cuit) throws RemoteException {
		// TODO Auto-generated method stub
		ProveedorTO prov = iRemota.buscarProveedor(cuit);
		if(prov.getCuit().equalsIgnoreCase(cuit))
		{
			return prov;
		}
		return null;
	}
	@Override
	public void persistirSolicitudRodamientosCliente(List<SolicitudRodamientosTO> list) throws RemoteException
	{
		iRemota.persistirSolicitudRodamientosCliente(list);
	}
	
	@Override
	public CotizacionTO generarCotizacion(String cuit, String OrdenCliente)
			throws RemoteException {
		// TODO Auto-generated method stub
		return iRemota.generarCotizacion(cuit, OrdenCliente);
	}
	@Override
	public RodamientoTO buscarRodamiento(String nSerie, String sufijo,
			String prefijo, String origen) throws RemoteException {
		// TODO Auto-generated method stub
		
		RodamientoTO rod = iRemota.buscarRodamiento(nSerie, sufijo, prefijo, origen);
		if(rod.getnSerie().equalsIgnoreCase(nSerie))
		{
			return rod;
		}
		return null;
		
		
	}
	@Override
	public void persistirListaPrecios(ListaPreciosTO listaTO)
			throws RemoteException {
		// TODO Auto-generated method stub
		
		iRemota.persistirListaPrecios(listaTO);
	}
	@Override
	public List<OrdenCompraProveedorTO> generarOrdenesDePedidoAProveedores() throws RemoteException {
		// TODO Auto-generated method stub
		return iRemota.generarOrdenesDePedidoAProveedores();
		
	}
	@Override
	public void persistirOrdenPedidoCliente(OrdenPedidoClienteTO OP)
			throws RemoteException {
		// TODO Auto-generated method stub		
		iRemota.persistirOrdenPedidoCliente(OP);
		
	}
	@Override
	public ItemCotizacionTO getItemCotizacionOPCliente(Integer nroCotizacion, RodamientoTO rod, Integer cantidad) throws RemoteException {
		
		return iRemota.getItemCotizacionOPCliente(nroCotizacion, rod, cantidad);
	}
	@Override
	public void cambiarPorcentajeDeGanancia(Integer i) throws RemoteException {
		// TODO Auto-generated method stub
		iRemota.cambiarPorcentajeDeGanancia(i);
	}	
	

	public ItemListaPreciosTO getItemListaPrecioFromOrdenCompra(Integer id, RodamientoTO rod) throws RemoteException 
	{
		return iRemota.getItemListaPrecioFromOrdenCompra(id, rod);
	}
	@Override
	public OrdenCompraProveedorTO buscarOrdenCompraProveedor(
			Integer idOrdenCompraProveedor) throws RemoteException {
		// TODO Auto-generated method stub
		return iRemota.buscarOrdenCompraProveedor(idOrdenCompraProveedor);
	}
	@Override
	public void persistirRemitoProveedor(RemitoProveedorTO dto)
			throws RemoteException {
		 iRemota.persistirRemitoProveedor(dto);
		
	}
	
	@Override
	public void procesarRemitosProveedores()
			throws RemoteException {
		iRemota.procesarRemitosProveedores();
	}
	@Override
	public List<RemitoClienteTO> verificarOrdenesClienteConSock()
			throws RemoteException {
		// TODO Auto-generated method stub
		return iRemota.verificarOrdenesClienteConSock();
	}
}
